02.a - Landing-Page-&-Payment
Relevant source files
This page documents the landing page interface and payment initiation flow. The landing page (app/page.tsx) serves as the primary entry point where users view service information and trigger the $10 payment process via Stripe Checkout. This page covers the UI structure, reusable components, and the server action that creates checkout sessions.
For the post-payment flow, see Success Page & GitHub Connection. For Stripe webhook processing, see Stripe Webhook Handling.
Page Structure and LayoutLink copied!
The landing page is implemented as a Next.js Server Component at app/page.tsx L12-L213
and exports the LandingPage function. The page uses a dark theme with bg-[#0B0C0E] as the primary background color and includes several distinct sections.
Navigation BarLink copied!
The navigation includes the godeep.wiki branding with a BookOpen icon from lucide-react, styled with a blue glow effect:
Content SectionsLink copied!
The page is organized into the following sections:
| Section | Purpose | Key Elements |
|---|---|---|
| Hero | Main value proposition and primary CTA | Title, badge, payment button |
| How It Works | Three-step process visualization | GitHub → Devin → Download |
| What You Get | Feature grid showing deliverables | 6 feature cards with icons |
| Why DeepWiki | Benefit highlights | 4 benefit items with descriptions |
| Pricing | Secondary CTA with pricing details | $10 price, Stripe button, guarantee text |
| Footer | Legal links and copyright | Terms, Privacy links |
Component Hierarchy Diagram
Sources: app/page.tsx L12-L213
Animation and Visual ComponentsLink copied!
The landing page uses several custom UI components to create visual effects and guide user attention.
FadeIn ComponentLink copied!
The FadeIn component provides staggered fade-in animations throughout the page. It accepts a delay prop to control animation timing:
- Badge:
delay={0}app/page.tsx L34 - Title:
delay={100}app/page.tsx L41 - Description:
delay={200}app/page.tsx L46 - CTA button:
delay={300}app/page.tsx L60
Each "How It Works" step uses 100ms increments: delay={0}, delay={100}, delay={200} app/page.tsx L74-L95
BackgroundReveal ComponentLink copied!
renders the BackgroundReveal component, which provides an animated background effect for the entire page.
IconGlow ComponentLink copied!
The IconGlow component wraps icons in the "How It Works" section, providing a hover glow effect:
components/icon-glow.tsx L10-L19
IconGlow Structure:
- Outer div:
relative group/icon inline-flex - Glow layer:
absolute -inset-2 bg-blue-500/20 rounded-full opacity-0 group-hover/icon:opacity-100 blur-lg - Container:
relative flex items-center justify-center w-12 h-12 rounded-2xl bg-slate-900/50 border border-slate-800 - Hover states:
group-hover/icon:border-blue-500/50andgroup-hover/icon:bg-blue-500/10
The component uses Tailwind's group hover variant to synchronize the glow effect with the icon container state.
Sources: app/page.tsx L74-L100
components/icon-glow.tsx L1-L20
SpotlightCard ComponentLink copied!
The SpotlightCard component creates an interactive spotlight effect that follows the user's cursor:
components/spotlight-card.tsx L10-L67
Implementation Details:
The component maintains three pieces of state:
divRef: Reference to the card element for bounds calculationposition: Object with{x, y}coordinates of cursor relative to cardopacity: Controls visibility of spotlight effect (0 when not hovering, 1 when hovering)
Event Handlers:
| Handler | Purpose | State Change |
|---|---|---|
handleMouseMove | Track cursor position | Updates position |
handleMouseEnter | Start spotlight | Sets opacity to 1 |
handleMouseLeave | End spotlight | Sets opacity to 0 |
handleFocus | Keyboard accessibility | Sets opacity to 1 |
handleBlur | Keyboard accessibility | Sets opacity to 0 |
Visual Layers:
- Base layer:
rounded-xl border border-slate-800 bg-slate-900/20 - Spotlight layer: Radial gradient at cursor position with
rgba(255,255,255,0.06) - Mask layer: Smaller radial gradient with
rgba(255,255,255,0.1)and mask image
The spotlight uses radial-gradient(600px circle at ${position.x}px ${position.y}px, ...) for both layers, creating a smooth falloff effect.
Sources: components/spotlight-card.tsx L1-L68
BeamButton ComponentLink copied!
The BeamButton component wraps the standard shadcn/ui Button with animated glow effects:
components/beam-button.tsx L10-L25
Visual Structure:
CSS Classes Applied:
- Container:
relative group inline-flex - Glow:
absolute -inset-0.5 bg-gradient-to-r from-blue-500 to-purple-600 rounded-full opacity-0 group-hover:opacity-100 transition duration-500 blur group-hover:blur-md animate-tilt - Button:
relative bg-blue-600 hover:bg-blue-500 text-white rounded-full px-8 h-12 text-base font-medium shadow-[0_0_20px_-5px_rgba(37,99,235,0.3)]
The animate-tilt class provides a subtle animation to the glow layer. The button accepts all standard Button props via spreading: {...props}.
Usage in Landing Page:
Two instances are rendered:
- Hero section:
<BeamButton size="lg" type="submit">Generate DeepWiki — $10</BeamButton>app/page.tsx L63-L65 - Pricing section:
<BeamButton size="lg" type="submit" className="w-full">Buy with Stripe</BeamButton>app/page.tsx L182-L184
Both are wrapped in <form action={createCheckoutSession}> elements.
Sources: components/beam-button.tsx L1-L26
Payment Flow: createCheckoutSession Server ActionLink copied!
The createCheckoutSession function is a Next.js Server Action that initiates the Stripe Checkout flow:
Payment Flow Sequence
Function Parameters:
The server action takes no parameters. It is marked with "use server" directive app/actions.ts L1
Session Configuration:
line_items: [ { price_data: { currency: "usd", product_data: { name: "DeepWiki Analysis", description: "Full architectural documentation for your GitHub repository." }, unit_amount: 1000 // $10.00 in cents }, quantity: 1 }]
URL Configuration:
| URL Type | Value | Purpose |
|---|---|---|
| success_url | ${origin}/success?session_id={CHECKOUT_SESSION_ID} | Redirect after successful payment |
| cancel_url | ${origin}/?canceled=true | Redirect if user cancels |
The {CHECKOUT_SESSION_ID} placeholder is replaced by Stripe with the actual session ID during redirect.
Origin Detection:
The action retrieves the origin from request headers to construct absolute URLs:
const headersList = await headers()const origin = headersList.get("origin") || "http://localhost:3000"
This ensures the URLs work in both development and production environments.
Redirect Behavior:
After creating the session, the action calls redirect(session.url) app/actions.ts L31
which triggers a Next.js redirect to the Stripe Checkout page. This redirect happens server-side and replaces the current page navigation.
Sources: app/actions.ts L1-L34
Stripe Integration SetupLink copied!
The createCheckoutSession action depends on the Stripe client instance imported from @/lib/stripe:
This import provides a configured Stripe instance initialized with the STRIPE_SECRET_KEY environment variable. The Stripe library version and configuration are determined by the @/lib/stripe module (not shown in provided files, but referenced by the import).
Required Environment Variables:
STRIPE_SECRET_KEY: Server-side API key for Stripe operations
For webhook handling after payment completion, see Stripe Webhook Handling.
Sources: app/actions.ts L4
Content and MetadataLink copied!
Page MetadataLink copied!
The landing page inherits metadata from the root layout app/layout.tsx L11-L56
:
SEO Metadata:
- Title: "Your Private Code Wiki | godeep.wiki"
- Description: "Understand any repo instantly. Generate a DeepWiki from any private GitHub repo..."
- Keywords: code documentation, github analysis, architecture diagrams, codebase understanding, developer tools, llm context, mermaid charts
Open Graph Configuration:
- Type: website
- Locale: en_US
- URL: https://godeep.wiki
Twitter Card:
- Card type: summary_large_image
- Creator: @godeepwiki
Hero Section ContentLink copied!
The hero section includes:
- Badge: "Think Deep Research for GitHub" with pulsing blue dot indicator app/page.tsx L35-L38
- Title: "Your Private Code Wiki" with gradient text effect app/page.tsx L42-L44
- Description: Links to https://deepwiki.com/ with orange hover effect app/page.tsx L47-L58
- CTA: Form with BeamButton "Generate DeepWiki — $10" app/page.tsx L62-L66
Feature DeliverablesLink copied!
The "What You Get" section displays 6 feature cards app/page.tsx L108-L125
:
| Icon | Label |
|---|---|
| Map | Architecture Diagram |
| Network | Mermaid Maps |
| Layers | Module Breakdown |
| Network | Dependencies |
| FileText | Docs Folder (MD) |
| Brain | LLM Context |
Benefits SectionLink copied!
The "Why DeepWiki" section highlights 4 key benefits app/page.tsx L131-L168
:
- Faster onboarding: "Understand new codebases in minutes, not days."
- LLM-ready: "Perfect context for Claude, GPT-4, or other AI coding assistants."
- Deeper understanding: "See the hidden connections and architecture clearly."
- Saves hours: "Skip the manual reading and diagramming."
Sources: app/page.tsx L32-L169
External Links and ReferencesLink copied!
The landing page includes several external links:
DeepWiki Reference:
- URL: https://deepwiki.com/
- Location: Hero description app/page.tsx L50
- Styling: Orange underline with glow effect on hover
Devin AI Reference:
- URL: https://devin.ai/pricing
- Location: "How It Works" section app/page.tsx L86
- Context: "Devin analyzes" step in the process flow
These links open in new tabs via target="_blank" and include rel="noopener noreferrer" for security.
Sources: app/page.tsx L49-L55
Analytics and MonitoringLink copied!
The landing page inherits third-party integrations from the root layout:
Vercel Analytics: app/layout.tsx L69
Cloudflare Web Analytics: app/layout.tsx L70-L77
The Cloudflare beacon token defaults to "ab3529b8b0844e25bb614474e5a56035" if NEXT_PUBLIC_CF_BEACON_TOKEN is not set app/layout.tsx L63
Sources: app/layout.tsx L63-L78
Form-Action Integration PatternLink copied!
The landing page demonstrates Next.js Server Actions pattern with HTML forms:
<form action={createCheckoutSession}> <BeamButton size="lg" type="submit"> Generate DeepWiki — $10 </BeamButton></form>
Key Characteristics:
- No onClick handlers: The form's
actionprop directly references the server action - Progressive enhancement: Works without JavaScript (though UI components require client-side JS)
- Type safety: TypeScript ensures
createCheckoutSessionmatches expected signature - Automatic serialization: Next.js handles the request/response cycle
- Server-side execution: Payment logic runs server-side, protecting API keys
This pattern eliminates the need for API route handlers or client-side fetch calls for form submission.
Payment Flow Summary:
Sources: app/page.tsx L62-L66
Refresh this wiki
Last indexed: 23 November 2025 (922b35)
On this page
- Landing Page & Payment
- Page Structure and Layout
- Navigation Bar
- Content Sections
- Animation and Visual Components
- FadeIn Component
- BackgroundReveal Component
- IconGlow Component
- SpotlightCard Component
- BeamButton Component
- Payment Flow: createCheckoutSession Server Action
- Stripe Integration Setup
- Content and Metadata
- Page Metadata
- Hero Section Content
- Feature Deliverables
- Benefits Section
- External Links and References
- Analytics and Monitoring
- Form-Action Integration Pattern
Ask Devin about godeep.wiki-jb